﻿using System;
using System.Threading;

class Clock
{
    // 定义嘀嗒事件
    public event EventHandler Tick;
    // 定义响铃事件
    public event EventHandler Alarm;

    // 开始运行闹钟
    public void Run()
    {
        Console.WriteLine("闹钟已启动，当前时间：" + DateTime.Now.ToString("HH:mm:ss"));

        while (true)
        {
            // 触发嘀嗒事件
            OnTick();

            // 模拟时间流逝
            Thread.Sleep(1000); // 1秒钟

            // 假设这里是判断是否该响铃的条件，比如到了指定时间
            if (DateTime.Now.Hour == 7 && DateTime.Now.Minute == 0 && DateTime.Now.Second == 0)
            {
                // 触发响铃事件
                OnAlarm();
            }
        }
    }

    // 触发嘀嗒事件的方法
    protected virtual void OnTick()
    {
        EventHandler handler = Tick;
        handler?.Invoke(this, EventArgs.Empty);
    }

    // 触发响铃事件的方法
    protected virtual void OnAlarm()
    {
        EventHandler handler = Alarm;
        handler?.Invoke(this, EventArgs.Empty);
    }
}

class Program
{
    static void Main(string[] args)
    {
        Clock clock = new Clock();

        // 订阅嘀嗒事件
        clock.Tick += (sender, e) =>
        {
            Console.WriteLine("嘀嗒...");
        };

        // 订阅响铃事件
        clock.Alarm += (sender, e) =>
        {
            Console.WriteLine("闹钟响了！时间到了！");
        };

        // 启动闹钟
        clock.Run();
    }
}

